package org.example.rzfx.task;

import lombok.extern.slf4j.Slf4j;
import org.example.rzfx.config.GlobalConfig;
import org.example.rzfx.service.LogService;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;

/**
 * 日志清理定时任务
 */
@Component
@Slf4j
public class LogCleanTask {
    
    @Resource
    private LogService logService;
    
    @Resource
    private GlobalConfig globalConfig;
    
    /**
     * 清理过期日志任务（每天凌晨2点执行）
     */
    @Scheduled(cron = "0 0 2 * * ?")
    public void cleanExpiredLogs() {
        // 检查是否启用自动清理
        if (!globalConfig.isAutoCleanLogEnabled()) {
            log.info("自动清理日志功能已禁用，跳过本次清理");
            return;
        }
        
        log.info("开始执行日志清理任务...");
        
        try {
            // 使用全局配置获取日志保留天数
            int retentionDays = globalConfig.getLogRetentionDays();
            
            // 删除过期日志
            logService.deleteExpiredLogs(retentionDays);
            
            log.info("日志清理任务完成，保留天数: {}", retentionDays);
        } catch (Exception e) {
            log.error("日志清理任务执行失败", e);
        }
    }
}

